Prevent empty password request popup for kerberos
authorAndre Heinecke <aheinecke@intevation.de>
Thu, 5 Feb 2015 10:14:01 +0000 (11:14 +0100)
committerMarek Kasik <mkasik@redhat.com>
Mon, 9 Mar 2015 13:19:57 +0000 (14:19 +0100)
    If auth_info_required is only set to "negotiate" the
    request password dialog is shown anyway for each print
    job without any input fields. As the request_password
    dialog only handles username, password and domain.

    https://bugzilla.gnome.org/show_bug.cgi?id=669008

modules/printbackends/cups/gtkprintbackendcups.c

index 7cd38416c718cff8ef3c9bb3ef83d8ec3bde3a4a..683410ee40106e7bcf2acdbabdc244883f3388be 100644 (file)
@@ -770,8 +770,24 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend         *print_backend,
   ps->job = g_object_ref (job);
   ps->http = http;
 
-  request->need_auth_info = cups_printer->auth_info_required != NULL;
-  request->auth_info_required = g_strdupv (cups_printer->auth_info_required);
+  request->need_auth_info = FALSE;
+  request->auth_info_required = NULL;
+
+  /* Check if auth_info_required is set and if it should be handled.
+   * The cups libraries handle the ticket exchange for "negotiate". */
+  if (cups_printer->auth_info_required != NULL &&
+      g_strv_length (cups_printer->auth_info_required) == 1 &&
+      g_strcmp0 (cups_printer->auth_info_required[0], "negotiate") == 0)
+    {
+      GTK_NOTE (PRINTING,
+                g_print ("CUPS Backend: Ignoring auth-info-required \"%s\"\n",
+                         cups_printer->auth_info_required[0]));
+    }
+  else if (cups_printer->auth_info_required != NULL)
+    {
+      request->need_auth_info = TRUE;
+      request->auth_info_required = g_strdupv (cups_printer->auth_info_required);
+    }
 
   cups_request_execute (GTK_PRINT_BACKEND_CUPS (print_backend),
                         request,